package com.efrei.schoolmanager.controlers;

import java.util.List;

import org.hibernate.HibernateException;

import com.efrei.schoolmanager.exceptions.LogicException;
import com.efrei.schoolmanager.model.hibernate.dao.ClasseDAO;
import com.efrei.schoolmanager.model.hibernate.dao.EleveDAO;
import com.efrei.schoolmanager.model.hibernate.dao.MatiereDAO;
import com.efrei.schoolmanager.model.obj.Classe;
import com.efrei.schoolmanager.model.obj.Eleve;
import com.efrei.schoolmanager.model.obj.Matiere;

/**
 * gestion globale des eleves. Permet la récupération de la liste des eleves, en
 * ajouter et en supprimer
 * 
 */
public class ControleurEleves extends ControleurTransactionnel {

	// les dao
	private final EleveDAO eleveDao;
	private final MatiereDAO matiereDao;
	private final ClasseDAO classeDao;
	// les données
	private List<Eleve> eleves;
	private List<Matiere> matieres;
	private List<Classe> classes;

	public ControleurEleves() throws HibernateException, LogicException {
		super();
		eleveDao = new EleveDAO(getSession());
		matiereDao = new MatiereDAO(getSession());
		classeDao = new ClasseDAO(getSession());
	}

	/**
	 * retourne la liste des eleves connus
	 * 
	 * @return liste des eleves
	 */
	public List<Eleve> getEleves() {
		if (eleves == null)
			eleves = eleveDao.getEleves();
		return eleves;
	}

	public List<Matiere> getMatieres() {
		if (matieres == null)
			matieres = matiereDao.getMatieres();
		return matieres;
	}

	public List<Classe> getClasses() {
		if (classes == null)
			classes = classeDao.getClasses();
		return classes;
	}

	@Override
	public void validAndQuit() throws LogicException {
		super.validAndQuit();
	}
}
